/**
 * 日期千分位表示，只需要采用 US 的国际化即可
 */
let number_format_us = new Intl.NumberFormat('en-US');

/**
 * 四舍五入保留整数
 *
 * @param num 数字
 * @returns 四舍五入后的整数
 */
const round = (num) => {
    return Math.round(num);
}

/**
 * 四舍五入保留2位小数
 *
 * @param num 数字
 * @returns 四舍五入后的字符串-保留2位小数
 */
const round2 = (num) => {
    return num.toFixed(2);
}

/**
 * 将数字缩小一万倍并四舍五入
 *
 * @param num 数字
 * @returns 处理后的整数
 */
const myriad = (num) => {
    return Math.round(num / 10000);
}

/**
 * 使用千位分隔符格式化数字
 *
 * @param num 数字
 * @returns 格式化后的字符串（如 "1,000"）
 */
const numWithCommas = (num) => {
    return number_format_us.format(num);
}

/**
 * 格式化文件大小
 *
 * @param size 文件大小（字节）
 * @returns 格式化后的文件大小字符串（如 "1GB"）
 */
const filesize = (size) => {
    const num = Math.abs(size);
    if (num > 1073741824) {
        return Math.round(num / 1073741824) + 'GB';
    } else if (num > 1048576) {
        return Math.round(num / 1048576) + 'MB';
    } else if (num > 1024) {
        return Math.round(num / 1024) + 'KB';
    } else {
        return num + 'B';
    }
}

/**
 * 数字前面填充0
 *
 * @param num 数字或字符串
 * @param len 期望结果长度
 * @returns 填充后的字符串
 */
const fillZero = (num, len) => {
    const str = num.toString();
    const paddingLength = len - str.length;

    if (paddingLength <= 0) return str;
    if (paddingLength === 1) return `0${str}`;
    if (paddingLength === 2) return `00${str}`;

    return `${Array(paddingLength).fill(0).join('')}${str}`;
}

export default {
    round, round2, numWithCommas, myriad, filesize, fillZero
};